# processing_dialog.py
from PySide6.QtWidgets import QDialog, QVBoxLayout, QLabel
from PySide6.QtCore import Qt


class ProcessingDialog(QDialog):
    """一个用于显示处理进度的模态对话框。"""
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setWindowTitle("请稍候")
        self.setFixedSize(300, 100)
        # 设置为应用程序模态，用户必须处理完这个窗口才能操作主窗口
        self.setWindowModality(Qt.WindowModality.ApplicationModal)

        layout = QVBoxLayout(self)
        self.label = QLabel("正在处理数据，请稍候...", self)
        self.label.setAlignment(Qt.AlignmentFlag.AlignCenter)
        layout.addWidget(self.label)

    def update_message(self, message: str):
        """更新对话框中显示的文本"""
        self.label.setText(message)


# --- 可选：添加一个简单的测试代码 ---
if __name__ == '__main__':
    import sys
    from PySide6.QtWidgets import QApplication

    app = QApplication(sys.argv)

    dialog = ProcessingDialog()
    dialog.show()  # 对于测试，使用 show() 即可
    # dialog.exec_() # exec_() 在 PySide6 中也被保留，但 exec() 是标准用法

    # 模拟更新消息
    from PySide6.QtCore import QTimer

    QTimer.singleShot(2000, lambda: dialog.update_message("处理成功！2秒后开始..."))
    QTimer.singleShot(4000, app.quit)  # 4秒后退出应用

    sys.exit(app.exec())


